home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Mops 2.5 / Mops source.sit / Mops source / Module source / casemod.txt < prev    next >
MacBinary  |  1994-05-08  |  8.3 KB  |  [TEXT/MSET]

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: MacBinary (archive/macBinary).

You can browse this item here: casemod.txt

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Sun May 8 16:30:02 1994, modified Sun May 8 16:30:02 1994, creator 'MSET', type ASCII, 7839 bytes "casemod.txt" , at 0x1f1f 286 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MSET]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0b 63 61 73 65 6d 6f | 64 2e 74 78 74 00 00 00 |..casemo|d.txt...|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 53 45 | 54 01 00 00 00 00 00 00 |.TEXTMSE|T.......|
|00000050| 00 00 00 00 00 1e 9f 00 | 00 01 1e a9 f2 fc 4a a9 |........|......J.|
|00000060| f2 fc 4a 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..J.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 51 17 00 00 |........|....Q...|
|00000080| 5c 20 54 68 69 73 20 6d | 6f 64 75 6c 65 20 68 61 |\ This m|odule ha|
|00000090| 6e 64 6c 65 73 20 74 68 | 65 20 69 6d 70 6c 65 6d |ndles th|e implem|
|000000a0| 65 6e 74 61 74 69 6f 6e | 20 6f 66 20 6f 75 72 20 |entation| of our |
|000000b0| 63 61 73 65 20 63 6f 6e | 73 74 72 75 63 74 73 0d |case con|structs.|
|000000c0| 5c 20 43 41 53 45 5b 20 | 61 6e 64 20 53 45 4c 45 |\ CASE[ |and SELE|
|000000d0| 43 54 5b 2e 0d 5c 20 4e | 6f 74 69 63 65 20 74 68 |CT[..\ N|otice th|
|000000e0| 61 74 20 77 65 20 64 6f | 6e 27 74 20 75 73 65 20 |at we do|n't use |
|000000f0| 61 6e 79 20 61 73 73 65 | 6d 62 6c 65 72 20 61 74 |any asse|mbler at|
|00000100| 20 61 6c 6c 2c 20 61 6e | 64 20 6f 6e 6c 79 20 6e | all, an|d only n|
|00000110| 65 65 64 20 6f 6e 65 0d | 5c 20 73 70 65 63 69 61 |eed one.|\ specia|
|00000120| 6c 20 68 61 6e 64 6c 65 | 72 20 77 6f 72 64 20 43 |l handle|r word C|
|00000130| 61 73 65 4a 4d 50 20 74 | 6f 20 63 6f 6d 70 69 6c |aseJMP t|o compil|
|00000140| 65 20 61 6e 20 69 6e 64 | 65 78 65 64 20 64 69 73 |e an ind|exed dis|
|00000150| 70 61 74 63 68 20 66 6f | 72 20 53 45 4c 45 43 54 |patch fo|r SELECT|
|00000160| 5b 2e 0d 5c 20 57 65 20 | 63 6f 6d 70 69 6c 65 20 |[..\ We |compile |
|00000170| 73 65 71 75 65 6e 63 65 | 73 20 74 68 61 74 20 74 |sequence|s that t|
|00000180| 68 65 20 6f 70 74 69 6d | 69 7a 65 72 20 77 69 6c |he optim|izer wil|
|00000190| 6c 20 70 69 63 6b 20 75 | 70 20 73 6f 20 74 68 61 |l pick u|p so tha|
|000001a0| 74 20 74 68 65 20 72 65 | 73 75 6c 74 69 6e 67 0d |t the re|sulting.|
|000001b0| 5c 20 63 6f 64 65 20 69 | 73 20 70 72 65 74 74 79 |\ code i|s pretty|
|000001c0| 20 77 65 6c 6c 20 6f 70 | 74 69 6d 75 6d 20 61 6e | well op|timum an|
|000001d0| 79 77 61 79 2e 20 20 54 | 68 65 20 6b 65 79 20 74 |yway. T|he key t|
|000001e0| 6f 20 74 68 69 73 20 69 | 73 20 74 68 65 20 75 73 |o this i|s the us|
|000001f0| 65 20 6f 66 20 74 68 65 | 0d 5c 20 70 73 65 75 64 |e of the|.\ pseud|
|00000200| 6f 2d 76 61 6c 75 65 20 | 22 54 72 65 67 22 20 77 |o-value |"Treg" w|
|00000210| 68 69 63 68 20 69 73 20 | 61 63 74 75 61 6c 6c 79 |hich is |actually|
|00000220| 20 74 68 65 20 6d 61 63 | 68 69 6e 65 20 72 65 67 | the mac|hine reg|
|00000230| 69 73 74 65 72 20 44 31 | 2e 0d 0d 0d 74 79 70 65 |ister D1|....type|
|00000240| 7b 20 20 6b 65 79 65 64 | 5f 63 61 73 65 20 20 69 |{ keyed|_case i|
|00000250| 6e 64 65 78 65 64 5f 63 | 61 73 65 20 20 7d 0d 0d |ndexed_c|ase }..|
|00000260| 32 34 30 09 63 6f 6e 73 | 74 61 6e 74 09 4b 45 59 |240.cons|tant.KEY|
|00000270| 45 44 5f 43 48 4b 0d 32 | 35 30 09 63 6f 6e 73 74 |ED_CHK.2|50.const|
|00000280| 61 6e 74 09 49 4e 44 45 | 58 45 44 5f 43 48 4b 0d |ant.INDE|XED_CHK.|
|00000290| 0d 0d 3a 20 43 41 53 45 | 5b 09 09 5c 20 28 20 2d |..: CASE|[..\ ( -|
|000002a0| 2d 20 53 63 68 61 69 6e | 20 46 63 68 61 69 6e 20 |- Schain| Fchain |
|000002b0| 65 6e 64 43 68 61 69 6e | 20 64 69 66 66 20 65 6e |endChain| diff en|
|000002c0| 64 2d 73 74 75 62 3f 20 | 63 68 6b 20 29 0d 09 09 |d-stub? |chk )...|
|000002d0| 09 5c 20 20 49 6d 70 6c | 65 6d 65 6e 74 73 20 43 |.\ Impl|ements C|
|000002e0| 41 53 45 5b 20 69 6e 20 | 6d 61 69 6e 20 64 69 63 |ASE[ in |main dic|
|000002f0| 2e 0d 09 63 61 73 65 5f | 74 79 70 65 09 09 09 09 |...case_|type....|
|00000300| 5c 20 73 61 76 65 20 6f | 76 65 72 20 6e 65 73 74 |\ save o|ver nest|
|00000310| 65 64 20 63 61 73 65 73 | 0d 09 6b 65 79 65 64 5f |ed cases|..keyed_|
|00000320| 63 61 73 65 20 2d 3e 20 | 63 61 73 65 5f 74 79 70 |case -> |case_typ|
|00000330| 65 0d 09 22 20 2d 3e 20 | 74 72 65 67 22 20 65 76 |e.." -> |treg" ev|
|00000340| 61 6c 75 61 74 65 0d 09 | 30 09 09 09 09 09 5c 20 |aluate..|0.....\ |
|00000350| 69 6e 69 74 69 61 6c 20 | 73 75 63 63 65 73 73 20 |initial |success |
|00000360| 63 68 61 69 6e 0d 09 30 | 09 09 09 09 09 5c 20 69 |chain..0|.....\ i|
|00000370| 6e 69 74 69 61 6c 20 66 | 61 69 6c 20 63 68 61 69 |nitial f|ail chai|
|00000380| 6e 0d 09 30 09 09 09 09 | 09 5c 20 69 6e 69 74 69 |n..0....|.\ initi|
|00000390| 61 6c 20 65 6e 64 20 63 | 68 61 69 6e 0d 09 30 09 |al end c|hain..0.|
|000003a0| 09 09 09 09 5c 20 69 6e | 69 74 69 61 6c 20 64 69 |....\ in|itial di|
|000003b0| 66 66 0d 09 66 61 6c 73 | 65 09 09 09 09 5c 20 6e |ff..fals|e....\ n|
|000003c0| 6f 20 65 6e 64 20 6f 66 | 20 73 74 75 62 20 79 65 |o end of| stub ye|
|000003d0| 74 0d 09 6b 65 79 65 64 | 5f 63 68 6b 09 09 09 5c |t..keyed|_chk...\|
|000003e0| 20 63 68 65 63 6b 20 76 | 61 6c 75 65 0d 09 70 6f | check v|alue..po|
|000003f0| 73 74 70 6f 6e 65 20 5b | 20 20 3b 09 09 69 6d 6d |stpone [| ;..imm|
|00000400| 65 64 69 61 74 65 0d 0d | 0d 3a 20 41 44 44 5f 45 |ediate..|.: ADD_E|
|00000410| 4e 54 52 59 20 7b 20 63 | 63 6d 70 20 6d 61 72 6b |NTRY { c|cmp mark|
|00000420| 2d 61 64 64 72 20 63 68 | 6b 20 6c 69 6e 6b 20 2d |-addr ch|k link -|
|00000430| 2d 20 6c 69 6e 6b 27 20 | 7d 0d 09 6c 69 6e 6b 20 |- link' |}..link |
|00000440| 49 46 0d 09 09 6c 69 6e | 6b 20 20 6d 61 72 6b 2d |IF...lin|k mark-|
|00000450| 61 64 64 72 20 77 64 69 | 73 70 6c 21 09 09 5c 20 |addr wdi|spl!..\ |
|00000460| 73 74 6f 72 65 20 6e 65 | 77 20 6d 61 72 6b 20 61 |store ne|w mark a|
|00000470| 74 20 70 72 65 76 20 61 | 64 64 72 20 69 66 20 61 |t prev a|ddr if a|
|00000480| 6e 79 0d 09 54 48 45 4e | 0d 09 6d 61 72 6b 2d 61 |ny..THEN|..mark-a|
|00000490| 64 64 72 20 20 09 09 09 | 09 09 09 5c 20 6d 61 72 |ddr ...|...\ mar|
|000004a0| 6b 20 61 64 64 72 20 69 | 73 20 6e 65 77 20 6c 69 |k addr i|s new li|
|000004b0| 6e 6b 0d 09 63 63 6d 70 | 20 24 20 31 30 30 20 61 |nk..ccmp| $ 100 a|
|000004c0| 6e 64 20 49 46 20 31 2b | 20 54 48 45 4e 20 20 3b |nd IF 1+| THEN ;|
|000004d0| 09 5c 20 53 74 6f 72 65 | 20 22 64 6f 6e 74 53 68 |.\ Store| "dontSh|
|000004e0| 6f 72 74 65 6e 22 20 66 | 6c 61 67 20 69 6e 20 6c |orten" f|lag in l|
|000004f0| 6f 77 20 62 69 74 0d 0d | 0d 3a 20 52 45 53 4f 4c |ow bit..|.: RESOL|
|00000500| 56 45 20 20 7b 20 6c 69 | 6e 6b 20 5c 20 6c 69 6e |VE { li|nk \ lin|
|00000510| 6b 27 20 6e 78 74 20 2d | 2d 20 7d 0d 09 42 45 47 |k' nxt -|- }..BEG|
|00000520| 49 4e 0d 09 09 6c 69 6e | 6b 20 20 2d 32 20 61 6e |IN...lin|k -2 an|
|00000530| 64 20 2d 3e 20 6c 69 6e | 6b 27 0d 09 09 6c 69 6e |d -> lin|k'...lin|
|00000540| 6b 27 0d 09 57 48 49 4c | 45 0d 09 09 6c 69 6e 6b |k'..WHIL|E...link|
|00000550| 27 20 77 64 69 73 70 6c | 61 63 65 20 2d 3e 20 6e |' wdispl|ace -> n|
|00000560| 78 74 0d 09 09 6c 69 6e | 6b 20 31 20 61 6e 64 20 |xt...lin|k 1 and |
|00000570| 49 46 20 20 24 20 31 30 | 30 20 20 45 4c 53 45 20 |IF $ 10|0 ELSE |
|00000580| 20 30 20 20 54 48 45 4e | 0d 09 09 6c 69 6e 6b 27 | 0 THEN|...link'|
|00000590| 20 31 32 30 20 20 3e 72 | 65 73 6f 6c 76 65 0d 09 | 120 >r|esolve..|
|000005a0| 09 6e 78 74 20 2d 3e 20 | 6c 69 6e 6b 0d 09 52 45 |.nxt -> |link..RE|
|000005b0| 50 45 41 54 20 20 3b 0d | 0d 0d 3a 20 52 45 53 4f |PEAT ;.|..: RESO|
|000005c0| 4c 56 45 46 20 20 7b 20 | 6c 69 6e 6b 20 5c 20 6c |LVEF { |link \ l|
|000005d0| 69 6e 6b 27 20 6e 78 74 | 20 2d 2d 20 7d 0d 09 42 |ink' nxt| -- }..B|
|000005e0| 45 47 49 4e 0d 09 09 6c | 69 6e 6b 20 20 2d 32 20 |EGIN...l|ink -2 |
|000005f0| 61 6e 64 20 2d 3e 20 6c | 69 6e 6b 27 0d 09 09 6c |and -> l|ink'...l|
|00000600| 69 6e 6b 27 0d 09 57 48 | 49 4c 45 0d 09 09 6c 69 |ink'..WH|ILE...li|
|00000610| 6e 6b 27 20 77 64 69 73 | 70 6c 61 63 65 20 2d 3e |nk' wdis|place ->|
|00000620| 20 6e 78 74 0d 09 09 6c | 69 6e 6b 20 31 20 61 6e | nxt...l|ink 1 an|
|00000630| 64 20 49 46 20 20 24 20 | 31 30 30 20 20 45 4c 53 |d IF $ |100 ELS|
|00000640| 45 20 20 30 20 20 54 48 | 45 4e 0d 09 09 6c 69 6e |E 0 TH|EN...lin|
|00000650| 6b 27 20 31 32 30 20 20 | 3e 72 65 73 6f 6c 76 65 |k' 120 |>resolve|
|00000660| 0d 09 09 6e 78 74 20 2d | 3e 20 6c 69 6e 6b 0d 09 |...nxt -|> link..|
|00000670| 09 6c 69 6e 6b 20 49 46 | 20 20 70 6f 73 74 70 6f |.link IF| postpo|
|00000680| 6e 65 20 6c 69 74 65 72 | 61 6c 20 20 22 20 2b 2b |ne liter|al " ++|
|00000690| 3e 20 74 72 65 67 22 20 | 65 76 61 6c 75 61 74 65 |> treg" |evaluate|
|000006a0| 20 20 54 48 45 4e 0d 09 | 52 45 50 45 41 54 20 20 | THEN..|REPEAT |
|000006b0| 3b 0d 0d 0d 5c 20 46 49 | 58 5f 53 54 55 42 20 69 |;...\ FI|X_STUB i|
|000006c0| 73 20 63 61 6c 6c 65 64 | 20 61 74 20 74 68 65 20 |s called| at the |
|000006d0| 65 6e 64 20 6f 66 20 61 | 20 73 74 75 62 2e 20 20 |end of a| stub. |
|000006e0| 57 65 20 64 6f 20 6d 61 | 6e 79 20 73 74 72 61 6e |We do ma|ny stran|
|000006f0| 67 65 20 61 6e 64 0d 5c | 20 69 6e 74 72 69 63 61 |ge and.\| intrica|
|00000700| 74 65 20 74 68 69 6e 67 | 73 2e 2e 2e 0d 0d 3a 20 |te thing|s.....: |
|00000710| 46 49 58 5f 53 54 55 42 | 20 20 7b 20 53 63 68 61 |FIX_STUB| { Scha|
|00000720| 69 6e 20 46 63 68 61 69 | 6e 20 65 6e 64 43 68 61 |in Fchai|n endCha|
|00000730| 69 6e 20 5c 20 73 76 4d | 43 20 2d 2d 20 65 6e 64 |in \ svM|C -- end|
|00000740| 43 68 61 69 6e 27 20 7d | 0d 09 6d 6f 76 65 43 6f |Chain' }|..moveCo|
|00000750| 64 65 3f 20 2d 3e 20 73 | 76 4d 43 0d 09 46 63 68 |de? -> s|vMC..Fch|
|00000760| 61 69 6e 20 77 64 69 73 | 70 6c 61 63 65 0d 09 49 |ain wdis|place..I|
|00000770| 46 0d 09 09 63 6f 6d 70 | 42 52 20 20 3e 6d 61 72 |F...comp|BR >mar|
|00000780| 6b 20 20 65 6e 64 43 68 | 61 69 6e 20 61 64 64 5f |k endCh|ain add_|
|00000790| 65 6e 74 72 79 20 20 2d | 3e 20 65 6e 64 43 68 61 |entry -|> endCha|
|000007a0| 69 6e 0d 09 09 66 61 6c | 73 65 20 2d 3e 20 6d 6f |in...fal|se -> mo|
|000007b0| 76 65 43 6f 64 65 3f 0d | 09 09 46 63 68 61 69 6e |veCode?.|..Fchain|
|000007c0| 20 72 65 73 6f 6c 76 65 | 46 0d 09 45 4c 53 45 0d | resolve|F..ELSE.|
|000007d0| 09 09 63 6f 6d 70 42 52 | 20 30 20 77 2c 0d 09 09 |..compBR| 0 w,...|
|000007e0| 53 63 68 61 69 6e 09 09 | 5c 20 54 68 69 73 20 69 |Schain..|\ This i|
|000007f0| 73 20 53 63 68 61 69 6e | 20 77 68 69 63 68 20 77 |s Schain| which w|
|00000800| 65 27 76 65 20 61 6c 72 | 65 61 64 79 20 72 65 73 |e've alr|eady res|
|00000810| 6f 6c 76 65 64 20 61 74 | 20 74 68 65 0d 09 09 09 |olved at| the....|
|00000820| 09 09 5c 20 74 68 65 20 | 73 74 61 72 74 20 6f 66 |..\ the |start of|
|00000830| 20 74 68 65 20 73 74 75 | 62 2c 20 62 75 74 20 77 | the stu|b, but w|
|00000840| 65 20 6e 65 65 64 20 69 | 74 20 68 65 72 65 20 74 |e need i|t here t|
|00000850| 6f 20 66 69 6e 64 20 6f | 75 74 0d 09 09 49 46 09 |o find o|ut...IF.|
|00000860| 09 09 5c 20 69 66 20 74 | 68 65 72 65 20 77 65 72 |..\ if t|here wer|
|00000870| 65 20 73 65 76 65 72 61 | 6c 20 22 73 75 63 63 65 |e severa|l "succe|
|00000880| 73 73 22 20 69 74 65 6d | 73 20 2d 20 69 66 20 73 |ss" item|s - if s|
|00000890| 6f 2c 20 77 65 0d 09 09 | 09 09 09 5c 20 63 61 6e |o, we...|...\ can|
|000008a0| 27 74 20 73 68 6f 72 74 | 65 6e 20 74 68 65 20 22 |'t short|en the "|
|000008b0| 66 61 69 6c 22 20 62 72 | 61 6e 63 68 28 65 73 29 |fail" br|anch(es)|
|000008c0| 0d 09 09 09 66 61 6c 73 | 65 20 2d 3e 20 6d 6f 76 |....fals|e -> mov|
|000008d0| 65 43 6f 64 65 3f 0d 09 | 09 54 48 45 4e 0d 09 09 |eCode?..|.THEN...|
|000008e0| 46 63 68 61 69 6e 20 72 | 65 73 6f 6c 76 65 46 0d |Fchain r|esolveF.|
|000008f0| 09 09 32 20 2d 2d 3e 20 | 44 50 20 3e 6d 61 72 6b |..2 --> |DP >mark|
|00000900| 20 20 65 6e 64 43 68 61 | 69 6e 20 61 64 64 5f 65 | endCha|in add_e|
|00000910| 6e 74 72 79 20 20 2d 3e | 20 65 6e 64 43 68 61 69 |ntry ->| endChai|
|00000920| 6e 0d 09 54 48 45 4e 0d | 09 73 76 4d 43 20 2d 3e |n..THEN.|.svMC ->|
|00000930| 20 6d 6f 76 65 43 6f 64 | 65 3f 0d 09 65 6e 64 43 | moveCod|e?..endC|
|00000940| 68 61 69 6e 20 20 3b 0d | 0d 0d 3a 20 4e 45 57 5f |hain ;.|..: NEW_|
|00000950| 53 54 55 42 20 20 7b 09 | 53 63 68 61 69 6e 20 46 |STUB {.|Schain F|
|00000960| 63 68 61 69 6e 20 65 6e | 64 43 68 61 69 6e 0d 09 |chain en|dChain..|
|00000970| 09 09 09 64 69 66 66 20 | 65 6e 64 2d 73 74 75 62 |...diff |end-stub|
|00000980| 3f 20 63 68 6b 0d 09 09 | 09 09 6c 6f 20 68 69 20 |? chk...|..lo hi |
|00000990| 20 66 6c 67 0d 09 09 09 | 09 5c 20 73 76 4d 43 0d | flg....|.\ svMC.|
|000009a0| 09 09 09 09 2d 2d 20 53 | 63 68 61 69 6e 27 20 46 |....-- S|chain' F|
|000009b0| 63 68 61 69 6e 27 20 65 | 6e 64 43 68 61 69 6e 27 |chain' e|ndChain'|
|000009c0| 20 64 69 66 66 20 65 6e | 64 2d 73 74 75 62 3f 20 | diff en|d-stub? |
|000009d0| 63 68 6b 20 7d 0d 0d 09 | 70 6f 73 74 70 6f 6e 65 |chk }...|postpone|
|000009e0| 20 5d 09 09 09 09 09 5c | 20 4d 75 73 74 20 62 65 | ].....\| Must be|
|000009f0| 20 63 6f 6d 70 69 6c 69 | 6e 67 20 66 6f 72 20 65 | compili|ng for e|
|00000a00| 76 61 6c 75 61 74 65 73 | 20 62 65 6c 6f 77 0d 09 |valuates| below..|
|00000a10| 6b 65 79 65 64 5f 63 68 | 6b 20 63 68 6b 20 3f 70 |keyed_ch|k chk ?p|
|00000a20| 61 69 72 73 0d 09 65 6e | 64 2d 73 74 75 62 3f 09 |airs..en|d-stub?.|
|00000a30| 09 09 09 09 5c 20 4e 5a | 20 69 66 20 65 6e 64 69 |....\ NZ| if endi|
|00000a40| 6e 67 20 61 20 73 74 75 | 62 0d 09 49 46 20 20 53 |ng a stu|b..IF S|
|00000a50| 63 68 61 69 6e 20 46 63 | 68 61 69 6e 20 65 6e 64 |chain Fc|hain end|
|00000a60| 43 68 61 69 6e 20 66 69 | 78 5f 73 74 75 62 20 20 |Chain fi|x_stub |
|00000a70| 2d 3e 20 65 6e 64 43 68 | 61 69 6e 0d 09 09 30 20 |-> endCh|ain...0 |
|00000a80| 2d 3e 20 53 63 68 61 69 | 6e 20 20 30 20 2d 3e 20 |-> Schai|n 0 -> |
|00000a90| 46 63 68 61 69 6e 0d 09 | 54 48 45 4e 0d 0d 09 68 |Fchain..|THEN...h|
|00000aa0| 69 20 6c 6f 20 3c 3e 0d | 09 49 46 0d 09 09 6c 6f |i lo <>.|.IF...lo|
|00000ab0| 20 64 69 66 66 20 2d 20 | 20 70 6f 73 74 70 6f 6e | diff - | postpon|
|00000ac0| 65 20 6c 69 74 65 72 61 | 6c 0d 09 09 22 20 2d 2d |e litera|l..." --|
|00000ad0| 3e 20 74 72 65 67 20 74 | 72 65 67 20 30 3e 3d 20 |> treg t|reg 0>= |
|00000ae0| 69 66 22 20 65 76 61 6c | 75 61 74 65 0d 09 09 46 |if" eval|uate...F|
|00000af0| 63 68 61 69 6e 20 61 64 | 64 5f 65 6e 74 72 79 20 |chain ad|d_entry |
|00000b00| 2d 3e 20 46 63 68 61 69 | 6e 0d 09 09 68 69 20 6c |-> Fchai|n...hi l|
|00000b10| 6f 20 2d 0d 09 09 68 69 | 20 6c 6f 20 2d 20 20 70 |o -...hi| lo - p|
|00000b20| 6f 73 74 70 6f 6e 65 20 | 6c 69 74 65 72 61 6c 0d |ostpone |literal.|
|00000b30| 09 09 22 20 2d 2d 3e 20 | 74 72 65 67 20 74 72 65 |.." --> |treg tre|
|00000b40| 67 20 30 3c 3d 22 20 65 | 76 61 6c 75 61 74 65 0d |g 0<=" e|valuate.|
|00000b50| 09 09 66 6c 67 0d 09 09 | 49 46 20 20 70 6f 73 74 |..flg...|IF post|
|00000b60| 70 6f 6e 65 20 69 66 0d | 09 09 09 46 63 68 61 69 |pone if.|...Fchai|
|00000b70| 6e 20 61 64 64 5f 65 6e | 74 72 79 20 2d 3e 20 46 |n add_en|try -> F|
|00000b80| 63 68 61 69 6e 0d 09 09 | 45 4c 53 45 0d 09 09 09 |chain...|ELSE....|
|00000b90| 70 6f 73 74 70 6f 6e 65 | 20 6e 69 66 20 20 64 6f |postpone| nif do|
|00000ba0| 6e 74 53 68 6f 72 74 65 | 6e 0d 09 09 09 53 63 68 |ntShorte|n....Sch|
|00000bb0| 61 69 6e 20 61 64 64 5f | 65 6e 74 72 79 20 2d 3e |ain add_|entry ->|
|00000bc0| 20 53 63 68 61 69 6e 0d | 09 09 54 48 45 4e 0d 09 | Schain.|..THEN..|
|00000bd0| 45 4c 53 45 0d 09 09 68 | 69 20 64 69 66 66 20 2d |ELSE...h|i diff -|
|00000be0| 20 20 70 6f 73 74 70 6f | 6e 65 20 6c 69 74 65 72 | postpo|ne liter|
|00000bf0| 61 6c 0d 09 09 22 20 2d | 2d 3e 20 74 72 65 67 20 |al..." -|-> treg |
|00000c00| 74 72 65 67 22 20 65 76 | 61 6c 75 61 74 65 0d 09 |treg" ev|aluate..|
|00000c10| 09 66 6c 67 0d 09 09 49 | 46 09 70 6f 73 74 70 6f |.flg...I|F.postpo|
|00000c20| 6e 65 20 6e 69 66 0d 09 | 09 09 46 63 68 61 69 6e |ne nif..|..Fchain|
|00000c30| 20 61 64 64 5f 65 6e 74 | 72 79 20 2d 3e 20 46 63 | add_ent|ry -> Fc|
|00000c40| 68 61 69 6e 0d 09 09 45 | 4c 53 45 0d 09 09 09 70 |hain...E|LSE....p|
|00000c50| 6f 73 74 70 6f 6e 65 20 | 69 66 0d 09 09 09 53 63 |ostpone |if....Sc|
|00000c60| 68 61 69 6e 20 61 64 64 | 5f 65 6e 74 72 79 20 2d |hain add|_entry -|
|00000c70| 3e 20 53 63 68 61 69 6e | 0d 09 09 54 48 45 4e 0d |> Schain|...THEN.|
|00000c80| 09 54 48 45 4e 0d 09 6c | 6f 20 2d 3e 20 64 69 66 |.THEN..l|o -> dif|
|00000c90| 66 0d 09 66 6c 67 20 49 | 46 0d 09 09 53 63 68 61 |f..flg I|F...Scha|
|00000ca0| 69 6e 20 72 65 73 6f 6c | 76 65 0d 09 09 53 63 68 |in resol|ve...Sch|
|00000cb0| 61 69 6e 20 49 46 20 20 | 68 65 72 65 20 32 2d 20 |ain IF |here 2- |
|00000cc0| 20 2d 3e 20 46 63 68 61 | 69 6e 20 20 54 48 45 4e | -> Fcha|in THEN|
|00000cd0| 0d 09 09 09 09 09 09 09 | 09 09 5c 20 77 65 20 63 |........|..\ we c|
|00000ce0| 6c 65 61 72 20 53 63 68 | 61 69 6e 20 6e 65 78 74 |lear Sch|ain next|
|00000cf0| 20 74 69 6d 65 20 61 72 | 6f 75 6e 64 2c 0d 09 09 | time ar|ound,...|
|00000d00| 09 09 09 09 09 09 09 5c | 20 20 73 69 6e 63 65 20 |.......\| since |
|00000d10| 61 74 20 46 49 58 5f 53 | 54 55 42 20 77 65 20 6e |at FIX_S|TUB we n|
|00000d20| 65 65 64 20 74 6f 20 6b | 6e 6f 77 0d 09 09 09 09 |eed to k|now.....|
|00000d30| 09 09 09 09 09 5c 20 20 | 77 68 65 74 68 65 72 20 |.....\ |whether |
|00000d40| 61 6e 79 74 68 69 6e 67 | 20 77 61 73 20 6f 6e 20 |anything| was on |
|00000d50| 69 74 0d 09 45 4c 53 45 | 0d 09 09 68 69 20 6c 6f |it..ELSE|...hi lo|
|00000d60| 20 3c 3e 0d 09 09 49 46 | 0d 09 09 09 6d 6f 76 65 | <>...IF|....move|
|00000d70| 43 6f 64 65 3f 20 2d 3e | 20 73 76 4d 43 0d 09 09 |Code? ->| svMC...|
|00000d80| 09 66 61 6c 73 65 20 2d | 3e 20 6d 6f 76 65 43 6f |.false -|> moveCo|
|00000d90| 64 65 3f 09 09 09 09 5c | 20 46 6f 72 20 73 65 76 |de?....\| For sev|
|00000da0| 65 72 61 6c 20 72 65 73 | 73 6f 6e 73 21 0d 09 09 |eral res|sons!...|
|00000db0| 09 70 6f 73 74 70 6f 6e | 65 20 6c 69 74 65 72 61 |.postpon|e litera|
|00000dc0| 6c 20 20 22 20 2b 2b 3e | 20 74 72 65 67 22 20 65 |l " ++>| treg" e|
|00000dd0| 76 61 6c 75 61 74 65 20 | 0d 09 09 09 46 63 68 61 |valuate |....Fcha|
|00000de0| 69 6e 20 72 65 73 6f 6c | 76 65 20 20 30 20 2d 3e |in resol|ve 0 ->|
|00000df0| 20 46 63 68 61 69 6e 0d | 09 09 09 73 76 4d 43 20 | Fchain.|...svMC |
|00000e00| 2d 3e 20 6d 6f 76 65 43 | 6f 64 65 3f 0d 09 09 54 |-> moveC|ode?...T|
|00000e10| 48 45 4e 0d 09 54 48 45 | 4e 0d 09 53 63 68 61 69 |HEN..THE|N..Schai|
|00000e20| 6e 20 46 63 68 61 69 6e | 20 65 6e 64 43 68 61 69 |n Fchain| endChai|
|00000e30| 6e 20 64 69 66 66 0d 09 | 66 6c 67 09 09 09 09 09 |n diff..|flg.....|
|00000e40| 09 09 09 5c 20 66 6c 67 | 20 69 73 20 65 6e 64 5f |...\ flg| is end_|
|00000e50| 73 74 75 62 3f 20 66 6f | 72 20 6e 65 78 74 20 74 |stub? fo|r next t|
|00000e60| 69 6d 65 0d 09 6b 65 79 | 65 64 5f 63 68 6b 20 20 |ime..key|ed_chk |
|00000e70| 3b 0d 0d 0d 3a 20 44 45 | 46 41 55 4c 54 20 20 7b |;...: DE|FAULT {|
|00000e80| 09 53 63 68 61 69 6e 20 | 46 63 68 61 69 6e 20 65 |.Schain |Fchain e|
|00000e90| 6e 64 43 68 61 69 6e 0d | 09 09 09 09 64 69 66 66 |ndChain.|....diff|
|00000ea0| 20 65 6e 64 2d 73 74 75 | 62 3f 20 63 68 6b 0d 09 | end-stu|b? chk..|
|00000eb0| 09 09 09 2d 2d 20 65 6e | 64 43 68 61 69 6e 20 63 |...-- en|dChain c|
|00000ec0| 68 6b 20 7d 0d 09 09 09 | 09 0d 09 6b 65 79 65 64 |hk }....|...keyed|
|00000ed0| 5f 63 68 6b 20 63 68 6b | 20 3f 70 61 69 72 73 0d |_chk chk| ?pairs.|
|00000ee0| 09 65 6e 64 2d 73 74 75 | 62 3f 0d 09 49 46 09 53 |.end-stu|b?..IF.S|
|00000ef0| 63 68 61 69 6e 20 46 63 | 68 61 69 6e 20 65 6e 64 |chain Fc|hain end|
|00000f00| 43 68 61 69 6e 20 20 66 | 69 78 5f 73 74 75 62 20 |Chain f|ix_stub |
|00000f10| 20 2d 3e 20 65 6e 64 43 | 68 61 69 6e 20 20 54 48 | -> endC|hain TH|
|00000f20| 45 4e 0d 09 70 6f 73 74 | 70 6f 6e 65 20 74 72 65 |EN..post|pone tre|
|00000f30| 67 0d 09 64 69 66 66 20 | 70 6f 73 74 70 6f 6e 65 |g..diff |postpone|
|00000f40| 20 6c 69 74 65 72 61 6c | 20 20 70 6f 73 74 70 6f | literal| postpo|
|00000f50| 6e 65 20 2b 0d 09 65 6e | 64 43 68 61 69 6e 20 20 |ne +..en|dChain |
|00000f60| 6b 65 79 65 64 5f 63 68 | 6b 20 31 2b 20 20 3b 0d |keyed_ch|k 1+ ;.|
|00000f70| 09 0d 0d 3a 20 5d 43 41 | 53 45 20 20 7b 20 65 6e |...: ]CA|SE { en|
|00000f80| 64 43 68 61 69 6e 20 63 | 68 6b 20 5c 20 73 76 4d |dChain c|hk \ svM|
|00000f90| 43 20 2d 2d 20 7d 0d 09 | 6b 65 79 65 64 5f 63 68 |C -- }..|keyed_ch|
|00000fa0| 6b 20 31 2b 20 63 68 6b | 20 3f 70 61 69 72 73 0d |k 1+ chk| ?pairs.|
|00000fb0| 09 6d 6f 76 65 43 6f 64 | 65 3f 20 2d 3e 20 73 76 |.moveCod|e? -> sv|
|00000fc0| 4d 43 0d 09 66 61 6c 73 | 65 20 2d 3e 20 6d 6f 76 |MC..fals|e -> mov|
|00000fd0| 65 43 6f 64 65 3f 0d 09 | 65 6e 64 43 68 61 69 6e |eCode?..|endChain|
|00000fe0| 20 72 65 73 6f 6c 76 65 | 0d 09 73 76 4d 43 20 2d | resolve|..svMC -|
|00000ff0| 3e 20 6d 6f 76 65 43 6f | 64 65 3f 0d 09 2d 3e 20 |> moveCo|de?..-> |
|00001000| 63 61 73 65 5f 74 79 70 | 65 20 20 3b 09 09 69 6d |case_typ|e ;..im|
|00001010| 6d 65 64 69 61 74 65 0d | 0d 0d 0d 5c 20 4e 6f 77 |mediate.|...\ Now|
|00001020| 20 66 6f 72 20 61 6e 20 | 69 6e 64 65 78 65 64 20 | for an |indexed |
|00001030| 63 61 73 65 2c 20 77 69 | 74 68 20 73 69 6d 69 6c |case, wi|th simil|
|00001040| 61 72 20 73 74 79 6c 65 | 20 73 79 6e 74 61 78 3a |ar style| syntax:|
|00001050| 0d 0d 20 20 20 30 09 76 | 61 6c 75 65 09 09 4d 41 |.. 0.v|alue..MA|
|00001060| 58 49 4e 44 45 58 0d 20 | 20 20 30 09 76 61 6c 75 |XINDEX. | 0.valu|
|00001070| 65 09 09 4d 49 4e 49 4e | 44 45 58 0d 20 20 20 0d |e..MININ|DEX. .|
|00001080| 20 20 20 30 09 76 61 6c | 75 65 09 09 41 44 44 52 | 0.val|ue..ADDR|
|00001090| 58 09 09 5c 20 6a 75 73 | 74 20 66 6f 72 20 74 65 |X..\ jus|t for te|
|000010a0| 73 74 69 6e 67 0d 0d 0d | 3a 20 53 45 4c 45 43 54 |sting...|: SELECT|
|000010b0| 5b 09 09 5c 20 28 20 2d | 2d 20 6c 6f 74 73 20 29 |[..\ ( -|- lots )|
|000010c0| 0d 0d 09 63 61 73 65 5f | 74 79 70 65 20 20 6d 61 |...case_|type ma|
|000010d0| 78 69 6e 64 65 78 20 20 | 6d 69 6e 69 6e 64 65 78 |xindex |minindex|
|000010e0| 09 5c 20 53 61 76 65 20 | 6f 6e 20 73 74 61 63 6b |.\ Save |on stack|
|000010f0| 20 66 6f 72 20 6e 65 73 | 74 65 64 20 63 61 73 65 | for nes|ted case|
|00001100| 73 0d 09 69 6e 64 65 78 | 65 64 5f 63 61 73 65 20 |s..index|ed_case |
|00001110| 20 2d 3e 20 63 61 73 65 | 5f 74 79 70 65 0d 09 30 | -> case|_type..0|
|00001120| 20 2d 3e 20 6d 61 78 69 | 6e 64 65 78 0d 09 62 69 | -> maxi|ndex..bi|
|00001130| 67 23 20 2d 3e 20 6d 69 | 6e 69 6e 64 65 78 0d 09 |g# -> mi|nindex..|
|00001140| 63 6f 6d 70 42 72 20 3e | 6d 61 72 6b 09 09 09 5c |compBr >|mark...\|
|00001150| 20 46 6f 72 77 61 72 64 | 20 62 72 61 6e 63 68 20 | Forward| branch |
|00001160| 74 6f 20 64 69 73 70 61 | 74 63 68 20 63 6f 64 65 |to dispa|tch code|
|00001170| 0d 09 64 6f 6e 74 53 68 | 6f 72 74 65 6e 09 09 09 |..dontSh|orten...|
|00001180| 09 5c 20 50 65 6e 61 6c | 74 79 3a 20 61 20 74 65 |.\ Penal|ty: a te|
|00001190| 72 72 69 62 6c 65 20 64 | 65 61 74 68 0d 09 31 09 |rrible d|eath..1.|
|000011a0| 09 09 09 09 09 5c 20 44 | 75 6d 6d 79 2c 20 73 6f |.....\ D|ummy, so|
|000011b0| 20 5d 53 45 4c 45 43 54 | 20 6b 6e 6f 77 73 20 77 | ]SELECT| knows w|
|000011c0| 68 65 6e 20 74 6f 20 73 | 74 6f 70 0d 09 30 09 09 |hen to s|top..0..|
|000011d0| 09 09 09 09 5c 20 69 6e | 69 74 69 61 6c 20 65 6e |....\ in|itial en|
|000011e0| 64 20 63 68 61 69 6e 0d | 09 66 61 6c 73 65 09 09 |d chain.|.false..|
|000011f0| 09 09 09 5c 20 6e 6f 20 | 65 6e 64 20 6f 66 20 73 |...\ no |end of s|
|00001200| 74 75 62 20 79 65 74 0d | 09 69 6e 64 65 78 65 64 |tub yet.|.indexed|
|00001210| 5f 63 68 6b 09 09 09 09 | 5c 20 63 68 65 63 6b 20 |_chk....|\ check |
|00001220| 76 61 6c 75 65 0d 09 70 | 6f 73 74 70 6f 6e 65 20 |value..p|ostpone |
|00001230| 5b 20 20 3b 09 09 69 6d | 6d 65 64 69 61 74 65 0d |[ ;..im|mediate.|
|00001240| 0d 0d 09 0d 3a 20 54 42 | 4c 5f 4e 45 57 5f 53 54 |....: TB|L_NEW_ST|
|00001250| 55 42 20 20 7b 20 20 65 | 6e 64 43 68 61 69 6e 20 |UB { e|ndChain |
|00001260| 65 6e 64 2d 73 74 75 62 | 3f 20 63 68 6b 20 69 6e |end-stub|? chk in|
|00001270| 64 65 78 20 66 6c 67 0d | 09 09 09 09 2d 2d 20 69 |dex flg.|....-- i|
|00001280| 6e 64 65 78 20 68 65 72 | 65 20 65 6e 64 43 68 61 |ndex her|e endCha|
|00001290| 69 6e 27 20 65 6e 64 2d | 73 74 75 62 3f 20 63 68 |in' end-|stub? ch|
|000012a0| 6b 20 7d 0d 0d 09 70 6f | 73 74 70 6f 6e 65 20 5d |k }...po|stpone ]|
|000012b0| 0d 09 69 6e 64 65 78 20 | 30 3c 20 20 3f 65 72 72 |..index |0< ?err|
|000012c0| 6f 72 20 31 30 32 0d 09 | 69 6e 64 65 78 20 6d 61 |or 102..|index ma|
|000012d0| 78 69 6e 64 65 78 20 6d | 61 78 20 20 2d 3e 20 6d |xindex m|ax -> m|
|000012e0| 61 78 69 6e 64 65 78 0d | 09 69 6e 64 65 78 20 6d |axindex.|.index m|
|000012f0| 69 6e 69 6e 64 65 78 20 | 6d 69 6e 20 20 2d 3e 20 |inindex |min -> |
|00001300| 6d 69 6e 69 6e 64 65 78 | 0d 09 6d 61 78 69 6e 64 |minindex|..maxind|
|00001310| 65 78 20 35 30 30 20 3e | 20 69 66 20 20 6d 73 67 |ex 500 >| if msg|
|00001320| 23 20 38 35 20 20 74 68 | 65 6e 0d 09 65 6e 64 2d |# 85 th|en..end-|
|00001330| 73 74 75 62 3f 0d 09 49 | 46 0d 09 09 63 6f 6d 70 |stub?..I|F...comp|
|00001340| 62 72 20 3e 6d 61 72 6b | 20 20 65 6e 64 43 68 61 |br >mark| endCha|
|00001350| 69 6e 20 61 64 64 5f 65 | 6e 74 72 79 20 20 2d 3e |in add_e|ntry ->|
|00001360| 20 65 6e 64 43 68 61 69 | 6e 0d 09 54 48 45 4e 0d | endChai|n..THEN.|
|00001370| 09 69 6e 64 65 78 20 68 | 65 72 65 0d 09 65 6e 64 |.index h|ere..end|
|00001380| 43 68 61 69 6e 0d 09 66 | 6c 67 09 09 09 09 09 09 |Chain..f|lg......|
|00001390| 09 09 5c 20 66 6c 67 20 | 69 73 20 65 6e 64 5f 73 |..\ flg |is end_s|
|000013a0| 74 75 62 3f 20 66 6f 72 | 20 6e 65 78 74 20 74 69 |tub? for| next ti|
|000013b0| 6d 65 0d 09 69 6e 64 65 | 78 65 64 5f 63 68 6b 20 |me..inde|xed_chk |
|000013c0| 20 3b 0d 0d 0d 3a 20 54 | 42 4c 5f 44 45 46 41 55 | ;...: T|BL_DEFAU|
|000013d0| 4c 54 20 20 7b 20 65 6e | 64 43 68 61 69 6e 20 65 |LT { en|dChain e|
|000013e0| 6e 64 2d 73 74 75 62 3f | 20 63 68 6b 0d 09 09 09 |nd-stub?| chk....|
|000013f0| 09 2d 2d 20 64 66 6c 74 | 2d 61 64 64 72 20 65 6e |.-- dflt|-addr en|
|00001400| 64 43 68 61 69 6e 20 63 | 68 6b 20 7d 0d 0d 09 70 |dChain c|hk }...p|
|00001410| 6f 73 74 70 6f 6e 65 20 | 5d 0d 09 65 6e 64 2d 73 |ostpone |]..end-s|
|00001420| 74 75 62 3f 20 49 46 20 | 20 63 6f 6d 70 62 72 20 |tub? IF | compbr |
|00001430| 3e 6d 61 72 6b 20 20 65 | 6e 64 43 68 61 69 6e 20 |>mark e|ndChain |
|00001440| 61 64 64 5f 65 6e 74 72 | 79 20 20 2d 3e 20 65 6e |add_entr|y -> en|
|00001450| 64 43 68 61 69 6e 20 20 | 54 48 45 4e 0d 09 68 65 |dChain |THEN..he|
|00001460| 72 65 09 09 09 09 09 5c | 20 68 65 72 65 27 73 20 |re.....\| here's |
|00001470| 77 68 65 72 65 20 74 68 | 65 20 64 65 66 61 75 6c |where th|e defaul|
|00001480| 74 20 63 6f 64 65 20 77 | 69 6c 6c 20 73 74 61 72 |t code w|ill star|
|00001490| 74 0d 09 0d 5c 20 6e 6f | 77 20 77 65 20 67 65 6e |t...\ no|w we gen|
|000014a0| 65 72 61 74 65 20 74 68 | 65 20 63 6f 64 65 20 74 |erate th|e code t|
|000014b0| 6f 20 72 65 63 6f 76 65 | 72 20 74 68 65 20 6f 72 |o recove|r the or|
|000014c0| 69 67 69 6e 61 6c 20 69 | 6e 64 65 78 0d 0d 09 22 |iginal i|ndex..."|
|000014d0| 20 74 72 65 67 20 32 2f | 20 2d 3e 20 74 72 65 67 | treg 2/| -> treg|
|000014e0| 22 20 65 76 61 6c 75 61 | 74 65 0d 09 6d 69 6e 69 |" evalua|te..mini|
|000014f0| 6e 64 65 78 20 70 6f 73 | 74 70 6f 6e 65 20 6c 69 |ndex pos|tpone li|
|00001500| 74 65 72 61 6c 20 20 22 | 20 2b 2b 3e 20 74 72 65 |teral "| ++> tre|
|00001510| 67 20 74 72 65 67 22 20 | 65 76 61 6c 75 61 74 65 |g treg" |evaluate|
|00001520| 0d 09 65 6e 64 43 68 61 | 69 6e 0d 09 69 6e 64 65 |..endCha|in..inde|
|00001530| 78 65 64 5f 63 68 6b 20 | 31 2b 20 20 3b 0d 0d 0d |xed_chk |1+ ;...|
|00001540| 3a 20 5d 53 45 4c 45 43 | 54 20 28 20 2e 2e 2e 20 |: ]SELEC|T ( ... |
|00001550| 69 6e 64 65 78 20 61 64 | 64 72 20 69 6e 64 65 78 |index ad|dr index|
|00001560| 20 61 64 64 72 20 29 0d | 09 09 7b 20 64 66 6c 74 | addr ).|..{ dflt|
|00001570| 2d 61 64 64 72 20 65 6e | 64 43 68 61 69 6e 20 63 |-addr en|dChain c|
|00001580| 68 6b 20 5c 20 74 62 6c | 5f 73 74 61 72 74 20 73 |hk \ tbl|_start s|
|00001590| 76 44 50 20 2d 2d 20 7d | 0d 0d 09 69 6e 64 65 78 |vDP -- }|...index|
|000015a0| 65 64 5f 63 68 6b 20 31 | 2b 20 63 68 6b 20 3f 70 |ed_chk 1|+ chk ?p|
|000015b0| 61 69 72 73 0d 09 63 6f | 6d 70 62 72 20 3e 6d 61 |airs..co|mpbr >ma|
|000015c0| 72 6b 20 20 65 6e 64 43 | 68 61 69 6e 20 61 64 64 |rk endC|hain add|
|000015d0| 5f 65 6e 74 72 79 20 20 | 2d 3e 20 65 6e 64 43 68 |_entry |-> endCh|
|000015e0| 61 69 6e 09 5c 20 77 69 | 6e 64 20 75 70 20 64 65 |ain.\ wi|nd up de|
|000015f0| 66 61 75 6c 74 20 73 74 | 75 62 0d 09 0d 20 5c 20 |fault st|ub... \ |
|00001600| 4e 6f 77 20 77 65 20 62 | 75 69 6c 64 20 74 68 65 |Now we b|uild the|
|00001610| 20 74 61 62 6c 65 3a 0d | 20 0d 20 09 68 65 72 65 | table:.| . .here|
|00001620| 20 2d 3e 20 74 62 6c 5f | 73 74 61 72 74 0d 09 6d | -> tbl_|start..m|
|00001630| 61 78 69 6e 64 65 78 20 | 6d 69 6e 69 6e 64 65 78 |axindex |minindex|
|00001640| 20 2d 20 31 2b 20 32 2a | 20 61 6c 6c 6f 74 0d 09 | - 1+ 2*| allot..|
|00001650| 64 66 6c 74 2d 61 64 64 | 72 20 74 62 6c 5f 73 74 |dflt-add|r tbl_st|
|00001660| 61 72 74 20 2d 20 20 28 | 20 6e 6f 77 20 72 65 6c |art - (| now rel|
|00001670| 61 74 69 76 65 20 74 6f | 20 74 62 6c 5f 61 64 64 |ative to| tbl_add|
|00001680| 72 20 29 0d 09 68 65 72 | 65 20 32 2d 09 09 09 09 |r )..her|e 2-....|
|00001690| 09 5c 20 6c 61 73 74 20 | 65 6e 74 72 79 20 61 64 |.\ last |entry ad|
|000016a0| 64 72 0d 09 74 62 6c 5f | 73 74 61 72 74 0d 09 44 |dr..tbl_|start..D|
|000016b0| 4f 20 20 28 20 66 69 6c | 6c 20 74 61 62 6c 65 20 |O ( fil|l table |
|000016c0| 77 69 74 68 20 64 66 6c | 74 20 61 64 64 72 20 69 |with dfl|t addr i|
|000016d0| 6e 69 74 69 61 6c 6c 79 | 20 29 0d 09 09 64 75 70 |nitially| )...dup|
|000016e0| 20 20 69 20 77 21 0d 09 | 32 20 2b 4c 4f 4f 50 0d | i w!..|2 +LOOP.|
|000016f0| 09 64 72 6f 70 0d 09 42 | 45 47 49 4e 09 28 20 69 |.drop..B|EGIN.( i|
|00001700| 6e 64 65 78 20 61 64 64 | 72 20 29 09 64 75 70 20 |ndex add|r ).dup |
|00001710| 31 20 3d 0d 09 4e 57 48 | 49 4c 45 0d 09 09 28 20 |1 =..NWH|ILE...( |
|00001720| 69 6e 64 65 78 20 61 64 | 64 72 20 29 20 20 74 62 |index ad|dr ) tb|
|00001730| 6c 5f 73 74 61 72 74 20 | 2d 20 20 73 77 61 70 20 |l_start |- swap |
|00001740| 6d 69 6e 69 6e 64 65 78 | 20 2d 20 32 2a 20 74 62 |minindex| - 2* tb|
|00001750| 6c 5f 73 74 61 72 74 20 | 2b 20 77 21 0d 09 52 45 |l_start |+ w!..RE|
|00001760| 50 45 41 54 0d 09 64 72 | 6f 70 0d 09 0d 5c 20 4e |PEAT..dr|op...\ N|
|00001770| 6f 77 20 77 65 20 67 65 | 6e 65 72 61 74 65 20 74 |ow we ge|nerate t|
|00001780| 68 65 20 64 69 73 70 61 | 74 63 68 20 63 6f 64 65 |he dispa|tch code|
|00001790| 3a 0d 0d 09 28 20 3e 6d | 61 72 6b 2d 66 72 6f 6d |:...( >m|ark-from|
|000017a0| 2d 69 6e 69 74 69 61 6c | 2d 62 72 61 6e 63 68 20 |-initial|-branch |
|000017b0| 29 0d 09 3e 72 65 73 6f | 6c 76 65 0d 09 22 20 2d |)..>reso|lve.." -|
|000017c0| 3e 20 74 72 65 67 20 74 | 72 65 67 20 2b 3e 20 74 |> treg t|reg +> t|
|000017d0| 72 65 67 22 20 65 76 61 | 6c 75 61 74 65 0d 09 6d |reg" eva|luate..m|
|000017e0| 69 6e 69 6e 64 65 78 20 | 32 2a 20 70 6f 73 74 70 |inindex |2* postp|
|000017f0| 6f 6e 65 20 6c 69 74 65 | 72 61 6c 20 22 20 2d 2d |one lite|ral " --|
|00001800| 3e 20 74 72 65 67 22 20 | 65 76 61 6c 75 61 74 65 |> treg" |evaluate|
|00001810| 0d 09 09 09 09 09 09 09 | 09 09 5c 20 43 6f 6d 70 |........|..\ Comp|
|00001820| 69 6c 65 73 20 6e 6f 74 | 68 69 6e 67 20 69 66 20 |iles not|hing if |
|00001830| 6d 69 6e 69 6e 64 65 78 | 20 69 73 20 7a 65 72 6f |minindex| is zero|
|00001840| 0d 09 6d 61 78 69 6e 64 | 65 78 20 6d 69 6e 69 6e |..maxind|ex minin|
|00001850| 64 65 78 20 2d 20 32 2a | 20 70 6f 73 74 70 6f 6e |dex - 2*| postpon|
|00001860| 65 20 6c 69 74 65 72 61 | 6c 0d 09 22 20 74 72 65 |e litera|l.." tre|
|00001870| 67 20 75 3c 20 6e 69 66 | 22 20 65 76 61 6c 75 61 |g u< nif|" evalua|
|00001880| 74 65 0d 09 66 61 6c 73 | 65 20 2d 3e 20 6d 6f 76 |te..fals|e -> mov|
|00001890| 65 43 6f 64 65 3f 0d 09 | 64 66 6c 74 2d 61 64 64 |eCode?..|dflt-add|
|000018a0| 72 20 2d 3e 20 44 50 20 | 3e 72 65 73 6f 6c 76 65 |r -> DP |>resolve|
|000018b0| 09 09 5c 20 62 72 61 6e | 63 68 20 69 73 20 61 63 |..\ bran|ch is ac|
|000018c0| 74 75 61 6c 6c 79 20 62 | 61 63 6b 2c 20 62 75 74 |tually b|ack, but|
|000018d0| 20 74 68 61 74 27 73 20 | 4f 4b 0d 09 09 09 09 09 | that's |OK......|
|000018e0| 09 09 09 09 5c 20 20 73 | 6f 20 6c 6f 6e 67 20 61 |....\ s|o long a|
|000018f0| 73 20 77 65 20 69 6e 68 | 69 62 69 74 20 63 6f 64 |s we inh|ibit cod|
|00001900| 65 20 6d 6f 76 65 6d 65 | 6e 74 0d 09 66 72 4e 78 |e moveme|nt..frNx|
|00001910| 74 44 50 20 2d 3e 20 44 | 50 0d 09 74 62 6c 5f 73 |tDP -> D|P..tbl_s|
|00001920| 74 61 72 74 20 6c 69 74 | 2d 61 64 64 72 20 22 20 |tart lit|-addr " |
|00001930| 74 72 65 67 20 2b 20 77 | 40 78 20 2d 3e 20 74 61 |treg + w|@x -> ta|
|00001940| 72 65 67 22 20 65 76 61 | 6c 75 61 74 65 0d 09 74 |reg" eva|luate..t|
|00001950| 62 6c 5f 73 74 61 72 74 | 20 6c 69 74 2d 61 64 64 |bl_start| lit-add|
|00001960| 72 20 22 20 74 61 72 65 | 67 20 2b 22 20 65 76 61 |r " tare|g +" eva|
|00001970| 6c 75 61 74 65 20 20 63 | 61 73 65 4a 4d 50 0d 09 |luate c|aseJMP..|
|00001980| 65 6e 64 43 68 61 69 6e | 20 72 65 73 6f 6c 76 65 |endChain| resolve|
|00001990| 09 09 09 09 5c 20 63 61 | 6e 27 74 20 6d 6f 76 65 |....\ ca|n't move|
|000019a0| 20 63 6f 64 65 20 6f 72 | 20 69 6e 69 74 69 61 6c | code or| initial|
|000019b0| 20 62 72 61 6e 63 68 0d | 09 74 72 75 65 20 2d 3e | branch.|.true ->|
|000019c0| 20 6d 6f 76 65 43 6f 64 | 65 3f 09 09 09 09 5c 20 | moveCod|e?....\ |
|000019d0| 20 77 6f 75 6c 64 20 62 | 65 20 77 72 6f 6e 67 0d | would b|e wrong.|
|000019e0| 0d 09 2d 3e 20 6d 69 6e | 69 6e 64 65 78 20 20 2d |..-> min|index -|
|000019f0| 3e 20 6d 61 78 69 6e 64 | 65 78 20 20 2d 3e 20 63 |> maxind|ex -> c|
|00001a00| 61 73 65 5f 74 79 70 65 | 20 20 3b 09 09 09 69 6d |ase_type| ;...im|
|00001a10| 6d 65 64 69 61 74 65 0d | 0d 0d 5c 20 54 68 65 73 |mediate.|..\ Thes|
|00001a20| 65 20 77 6f 72 64 73 20 | 61 72 65 20 74 68 65 20 |e words |are the |
|00001a30| 73 61 6d 65 20 69 6e 20 | 62 6f 74 68 20 63 6f 6e |same in |both con|
|00001a40| 73 74 72 75 63 74 73 2c | 20 73 6f 20 77 65 20 77 |structs,| so we w|
|00001a50| 6f 72 6b 20 6f 75 74 20 | 77 68 69 63 68 20 61 63 |ork out |which ac|
|00001a60| 74 69 6f 6e 0d 5c 20 74 | 6f 20 61 70 70 6c 79 20 |tion.\ t|o apply |
|00001a70| 62 79 20 6c 6f 6f 6b 69 | 6e 67 20 61 74 20 63 61 |by looki|ng at ca|
|00001a80| 73 65 5f 74 79 70 65 2e | 0d 0d 3a 20 5d 3d 3e 09 |se_type.|..: ]=>.|
|00001a90| 09 63 61 73 65 5f 74 79 | 70 65 20 6b 65 79 65 64 |.case_ty|pe keyed|
|00001aa0| 5f 63 61 73 65 20 3d 0d | 09 09 09 49 46 09 09 64 |_case =.|...IF..d|
|00001ab0| 75 70 20 20 74 72 75 65 | 20 6e 65 77 5f 73 74 75 |up true| new_stu|
|00001ac0| 62 0d 09 09 09 45 4c 53 | 45 09 74 72 75 65 20 74 |b....ELS|E.true t|
|00001ad0| 62 6c 5f 6e 65 77 5f 73 | 74 75 62 0d 09 09 09 54 |bl_new_s|tub....T|
|00001ae0| 48 45 4e 20 20 3b 09 09 | 09 09 09 09 69 6d 6d 65 |HEN ;..|....imme|
|00001af0| 64 69 61 74 65 0d 09 09 | 09 0d 3a 20 5d 2c 09 09 |diate...|..: ],..|
|00001b00| 63 61 73 65 5f 74 79 70 | 65 20 6b 65 79 65 64 5f |case_typ|e keyed_|
|00001b10| 63 61 73 65 20 3d 0d 09 | 09 09 49 46 09 09 64 75 |case =..|..IF..du|
|00001b20| 70 20 66 61 6c 73 65 20 | 6e 65 77 5f 73 74 75 62 |p false |new_stub|
|00001b30| 0d 09 09 09 45 4c 53 45 | 09 66 61 6c 73 65 20 74 |....ELSE|.false t|
|00001b40| 62 6c 5f 6e 65 77 5f 73 | 74 75 62 0d 09 09 09 54 |bl_new_s|tub....T|
|00001b50| 48 45 4e 20 20 3b 09 09 | 09 09 09 09 69 6d 6d 65 |HEN ;..|....imme|
|00001b60| 64 69 61 74 65 0d 0d 3a | 20 52 41 4e 47 45 5d 3d |diate..:| RANGE]=|
|00001b70| 3e 09 74 72 75 65 20 6e | 65 77 5f 73 74 75 62 20 |>.true n|ew_stub |
|00001b80| 20 3b 09 09 09 69 6d 6d | 65 64 69 61 74 65 0d 3a | ;...imm|ediate.:|
|00001b90| 20 52 41 4e 47 45 5d 2c | 09 66 61 6c 73 65 20 6e | RANGE],|.false n|
|00001ba0| 65 77 5f 73 74 75 62 20 | 20 3b 09 09 09 69 6d 6d |ew_stub | ;...imm|
|00001bb0| 65 64 69 61 74 65 0d 0d | 0d 3a 20 44 45 46 41 55 |ediate..|.: DEFAU|
|00001bc0| 4c 54 3d 3e 09 63 61 73 | 65 5f 74 79 70 65 20 6b |LT=>.cas|e_type k|
|00001bd0| 65 79 65 64 5f 63 61 73 | 65 20 3d 0d 09 09 09 49 |eyed_cas|e =....I|
|00001be0| 46 09 09 64 65 66 61 75 | 6c 74 0d 09 09 09 45 4c |F..defau|lt....EL|
|00001bf0| 53 45 09 74 62 6c 5f 64 | 65 66 61 75 6c 74 0d 09 |SE.tbl_d|efault..|
|00001c00| 09 09 54 48 45 4e 20 20 | 3b 09 09 09 09 09 09 69 |..THEN |;......i|
|00001c10| 6d 6d 65 64 69 61 74 65 | 0d 0d 0d 65 6e 64 6c 6f |mmediate|...endlo|
|00001c20| 61 64 0d 0d 2b 65 63 68 | 6f 0d 5c 20 53 6f 6d 65 |ad..+ech|o.\ Some|
|00001c30| 74 68 69 6e 67 20 61 73 | 20 63 6f 6d 70 6c 69 63 |thing as| complic|
|00001c40| 61 74 65 64 20 61 73 20 | 74 68 61 74 20 6e 65 65 |ated as |that nee|
|00001c50| 64 73 20 61 20 62 69 74 | 20 6f 66 20 73 79 73 74 |ds a bit| of syst|
|00001c60| 65 6d 61 74 69 63 20 74 | 65 73 74 69 6e 67 2e 2e |ematic t|esting..|
|00001c70| 2e 0d 0d 3a 20 71 71 20 | 64 62 0d 09 63 61 73 65 |...: qq |db..case|
|00001c80| 5b 20 32 31 20 5d 3d 3e | 20 32 31 30 0d 09 09 5b |[ 21 ]=>| 210...[|
|00001c90| 20 32 32 20 5d 3d 3e 20 | 32 32 30 0d 09 09 5b 20 | 22 ]=> |220...[ |
|00001ca0| 38 30 20 5d 2c 20 5b 20 | 38 32 20 5d 2c 20 5b 20 |80 ], [ |82 ], [ |
|00001cb0| 38 34 20 5d 2c 20 5b 20 | 38 36 20 5d 3d 3e 20 38 |84 ], [ |86 ]=> 8|
|00001cc0| 38 38 0d 09 09 5b 20 33 | 30 20 34 30 20 72 61 6e |88...[ 3|0 40 ran|
|00001cd0| 67 65 5d 3d 3e 20 33 33 | 33 0d 09 09 5b 20 39 30 |ge]=> 33|3...[ 90|
|00001ce0| 20 5d 2c 20 5b 20 39 32 | 20 5d 2c 20 5b 20 31 30 | ], [ 92| ], [ 10|
|00001cf0| 30 20 31 35 30 20 72 61 | 6e 67 65 5d 2c 20 5b 20 |0 150 ra|nge], [ |
|00001d00| 31 37 30 20 5d 3d 3e 20 | 2d 39 39 39 0d 09 09 5b |170 ]=> |-999...[|
|00001d10| 20 32 32 32 20 5d 3d 3e | 20 20 32 32 32 30 0d 09 | 222 ]=>| 2220..|
|00001d20| 20 20 64 65 66 61 75 6c | 74 3d 3e 20 39 39 0d 09 | defaul|t=> 99..|
|00001d30| 20 5d 63 61 73 65 20 20 | 3b 0d 0d 3a 20 71 20 64 | ]case |;..: q d|
|00001d40| 62 0d 09 73 65 6c 65 63 | 74 5b 09 33 20 5d 3d 3e |b..selec|t[.3 ]=>|
|00001d50| 20 32 33 0d 09 09 20 20 | 5b 20 32 20 5d 3d 3e 20 | 23... |[ 2 ]=> |
|00001d60| 32 32 0d 5c 09 09 20 20 | 5b 20 30 20 5d 3d 3e 20 |22.\.. |[ 0 ]=> |
|00001d70| 32 30 0d 09 09 20 20 5b | 20 38 20 5d 3d 3e 20 32 |20... [| 8 ]=> 2|
|00001d80| 38 0d 09 64 65 66 61 75 | 6c 74 3d 3e 20 39 39 39 |8..defau|lt=> 999|
|00001d90| 0d 09 5d 73 65 6c 65 63 | 74 20 20 3b 0d 0d 3a 20 |..]selec|t ;..: |
|00001da0| 3f 43 48 4b 09 3c 3e 20 | 61 62 6f 72 74 22 20 63 |?CHK.<> |abort" c|
|00001db0| 68 65 63 6b 20 46 41 49 | 4c 45 44 21 21 21 22 20 |heck FAI|LED!!!" |
|00001dc0| 20 3b 0d 0d 65 6e 64 6c | 6f 61 64 0d 0d 2b 65 63 | ;..endl|oad..+ec|
|00001dd0| 68 6f 0d 32 31 20 71 71 | 20 20 32 31 30 20 3f 63 |ho.21 qq| 210 ?c|
|00001de0| 68 6b 0d 32 32 20 71 71 | 20 20 32 32 30 20 3f 63 |hk.22 qq| 220 ?c|
|00001df0| 68 6b 0d 38 30 20 71 71 | 20 20 38 38 38 20 3f 63 |hk.80 qq| 888 ?c|
|00001e00| 68 6b 0d 38 34 20 71 71 | 20 20 38 38 38 20 3f 63 |hk.84 qq| 888 ?c|
|00001e10| 68 6b 0d 38 35 20 71 71 | 20 20 39 39 20 20 3f 63 |hk.85 qq| 99 ?c|
|00001e20| 68 6b 20 20 38 35 20 3f | 63 68 6b 0d 33 35 20 71 |hk 85 ?|chk.35 q|
|00001e30| 71 20 20 33 33 33 20 3f | 63 68 6b 0d 39 32 20 71 |q 333 ?|chk.92 q|
|00001e40| 71 20 20 2d 39 39 39 20 | 3f 63 68 6b 0d 31 32 30 |q -999 |?chk.120|
|00001e50| 20 71 71 20 2d 39 39 39 | 20 3f 63 68 6b 0d 31 37 | qq -999| ?chk.17|
|00001e60| 30 20 71 71 20 2d 39 39 | 39 20 3f 63 68 6b 0d 32 |0 qq -99|9 ?chk.2|
|00001e70| 32 32 20 71 71 20 32 32 | 32 30 20 3f 63 68 6b 0d |22 qq 22|20 ?chk.|
|00001e80| 39 39 39 39 20 71 71 20 | 39 39 20 3f 63 68 6b 20 |9999 qq |99 ?chk |
|00001e90| 39 39 39 39 20 3f 63 68 | 6b 0d 0d 33 20 71 09 09 |9999 ?ch|k..3 q..|
|00001ea0| 32 33 09 3f 63 68 6b 0d | 32 20 71 09 09 32 32 09 |23.?chk.|2 q..22.|
|00001eb0| 3f 63 68 6b 0d 38 20 71 | 09 09 32 38 09 3f 63 68 |?chk.8 q|..28.?ch|
|00001ec0| 6b 0d 36 20 71 09 09 39 | 39 39 09 3f 63 68 6b 20 |k.6 q..9|99.?chk |
|00001ed0| 20 36 20 3f 63 68 6b 0d | 2d 31 20 71 09 39 39 39 | 6 ?chk.|-1 q.999|
|00001ee0| 09 3f 63 68 6b 20 20 2d | 31 20 3f 63 68 6b 0d 39 |.?chk -|1 ?chk.9|
|00001ef0| 20 20 71 09 39 39 39 09 | 3f 63 68 6b 20 20 39 20 | q.999.|?chk 9 |
|00001f00| 3f 63 68 6b 0d 0d 0d 5c | 20 74 6f 72 74 75 72 65 |?chk...\| torture|
|00001f10| 20 74 65 73 74 73 20 57 | 4f 52 4b 45 44 21 0d 00 | tests W|ORKED!..|
|00001f20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001f80| 00 00 01 00 00 00 01 00 | 00 00 00 00 00 00 00 1e |........|........|
|00001f90| a8 a3 11 00 31 5a 5b 11 | a8 73 16 4c ee 18 80 ff |....1Z[.|.s.L....|
|00001fa0| f0 4e 5e 4e 75 4e 56 5b | 5c 01 07 18 11 1e 2e 11 |.N^NuNV[|\.......|
|00001fb0| 0b 63 61 73 65 6d 6f 64 | 2e 74 78 74 02 00 00 00 |.casemod|.txt....|
|00001fc0| 50 61 72 74 53 49 54 78 | 00 00 00 00 00 00 00 00 |PartSITx|........|
|00001fd0| 00 00 50 61 72 74 53 49 | 54 78 00 00 00 00 00 00 |..PartSI|Tx......|
|00001fe0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001ff0| 00 00 ab 06 23 35 00 00 | 00 00 00 00 01 1e 00 10 |....#5..|........|
|00002000| 07 2f 00 27 60 12 20 50 | 22 68 ee 26 01 42 05 12 |./.'`. P|"h.&.B..|
|00002010| 4f ef 00 0c 01 60 20 32 | 27 14 2f 0c 20 54 20 50 |O....` 2|'./. T P|
|00002020| 22 68 01 00 54 26 7f 31 | 34 96 01 67 6c 25 92 26 |"h..T&.1|4..gl%.&|
|00002030| 7a 5b 55 7f 2f 03 56 c1 | 44 01 4a 01 2e 56 25 12 |z[U./.V.|D.J..V%.|
|00002040| 00 44 4e 91 5a 5b 2a 34 | 04 60 2a 0c 06 00 fa 66 |.DN.Z[*4|.`*....f|
|00002050| 24 11 4a 07 b0 7d bb 55 | 13 48 80 48 c0 2f 00 27 |$.J..}.U|.H.H./.'|
|00002060| 35 01 00 48 26 34 01 10 | 05 73 01 18 e0 9f 14 4e |5..H&4..|.s.....N|
|00002070| 5e 4e 75 4e 56 00 00 13 | 4a 2d f6 32 67 0a 55 56 |^NuNV...|J-.2g.UV|
|00002080| 00 00 01 00 00 00 01 00 | 00 00 00 00 00 00 00 1e |........|........|
|00002090| 00 00 00 00 00 00 00 00 | 00 1c 00 1e ff ff 00 00 |........|........|
|000020a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000020b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000020c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000020d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000020e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000020f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+